#!/usr/bin/env python3
"""
测试运行脚本
提供便捷的测试运行方式
"""
import subprocess
import sys
import os


def run_command(command, description):
    """运行命令并显示结果"""
    print(f"\n{'='*50}")
    print(f"运行: {description}")
    print(f"命令: {command}")
    print('='*50)
    
    result = subprocess.run(command, shell=True, capture_output=True, text=True)
    
    if result.stdout:
        print("输出:")
        print(result.stdout)
    
    if result.stderr:
        print("错误:")
        print(result.stderr)
    
    if result.returncode != 0:
        print(f"❌ {description} 失败 (退出码: {result.returncode})")
        return False
    else:
        print(f"✅ {description} 成功")
        return True


def main():
    """主函数"""
    print("🧪 开始运行测试套件")
    
    # 确保在正确的目录
    os.chdir(os.path.dirname(os.path.abspath(__file__)))
    
    # 安装测试依赖
    if not run_command("pip install -r requirements.txt", "安装依赖"):
        print("❌ 依赖安装失败，退出")
        sys.exit(1)
    
    # 运行所有测试
    if not run_command("pytest", "运行所有测试"):
        print("❌ 测试失败")
        sys.exit(1)
    
    # 运行单元测试
    if not run_command("pytest -m unit", "运行单元测试"):
        print("⚠️ 单元测试失败")
    
    # 运行集成测试
    if not run_command("pytest -m integration", "运行集成测试"):
        print("⚠️ 集成测试失败")
    
    # 生成覆盖率报告
    run_command("pytest --cov=app --cov-report=html", "生成覆盖率报告")
    
    print("\n🎉 测试完成!")
    print("📊 覆盖率报告已生成到 htmlcov/index.html")


if __name__ == "__main__":
    main()